package innerclass;

/**
 * 内部类
 * 静态方法的内部类可以访问外部类的静态变量：静态变量
 静态方法的内部类可以访问方法的final变量：2
 静态方法的匿名内部类可以访问外部类的静态变量：静态变量
 静态方法的匿名内部类可以访问方法的final变量：2
 非静态方法的内部类可以访问外部类的实例变量：实例变量
 非静态方法的内部类可以访问外部类的静态变量：静态变量
 非静态方法的内部类可以访问方法的final变量：2
 非静态方法的匿名内部类可以访问外部类的实例变量：实例变量
 非静态方法的匿名内部类可以访问外部类的静态变量：静态变量
 非静态方法的匿名内部类可以访问方法的final变量：2
 */
public class Outer {
    private int a=5;
    public Inner1 inner;//类型为Inner1的成员
    public Outer(){
        inner=new Inner1();
    }

    //在类里定义内部类
    class Inner1{
        private int ib;

        public int getIb() {
            return ib+a;
        }
        public void setIb(int ib) {
            this.ib = ib;
        }
    }
    public void method1(){
        //在方法内定义的为局部内部类
        class Inner2{

        }
    }

}
